Hibernate এবং JPA ব্যবহারের সময় ডাটাবেজ অপারেশনে বিভিন্ন ধরণের এক্সসেপশন (Exceptions) ঘটে। এই এক্সসেপশনগুলো বুঝে সঠিকভাবে হ্যান্ডল করা গুরুত্বপূর্ণ। Hibernate এবং JPA নিজস্ব এক্সসেপশন হিয়ারার্কি ব্যবহার করে যা ডেভেলপারদের জন্য ডিবাগিং সহজ করে।
User user = session.get(User.class, userId);
session.close();
System.out.println(user.getOrders().size()); // LazyInitializationException
Query query = session.createQuery("FROM User WHERE email = :email");
query.setParameter("email", "john.doe@example.com");
User user = (User) query.getSingleResult(); // NonUniqueResultException
getResultList()
ব্যবহার করে লিস্ট রিটার্ন করা।User user = new User();
user.setId(1); // ID already exists
session.save(user); // ConstraintViolationException
getReference()
ব্যবহার করে কোনো Entity পাওয়া না গেলে।User user = session.getReference(User.class, invalidId); // EntityNotFoundException
get()
ব্যবহার করা, যা null রিটার্ন করে।User user1 = session.get(User.class, userId);
User user2 = session.get(User.class, userId);
user1.setName("User 1");
session.update(user1);
user2.setName("User 2");
session.update(user2); // StaleObjectStateException
@Version
এনোটেশন ব্যবহার করে Entity-তে ভার্সনিং যোগ করা।session.save(user); // TransactionRequiredException
@Transactional
ব্যবহার করা।Query query = session.createQuery("FROM Users"); // Incorrect table name
User user = new User();
session.update(user); // PersistentObjectException
Order order = new Order();
order.setUser(null); // Null Foreign Key
session.save(order); // DataIntegrityViolationException
User user1 = session1.get(User.class, userId);
User user2 = session2.get(User.class, userId);
user1.setName("User 1");
session1.update(user1);
user2.setName("User 2");
session2.update(user2); // OptimisticLockException
@Version
ব্যবহার করে Optimistic Locking সক্রিয় করা।@Repository
এনোটেশন ব্যবহার করলে HibernateException গুলো Spring এর DataAccessException
এ কনভার্ট হয়।Hibernate এবং JPA তে কমন এক্সসেপশনগুলি সম্পর্কে ধারণা এবং সেগুলোর সঠিক ব্যবস্থাপনা ডেটাবেস অপারেশনগুলোকে আরো কার্যকর করে তোলে।
Read more